import Vue from 'vue';

import Cookies from 'js-cookie';

import 'normalize.css/normalize.css'; // a modern alternative to CSS resets

import Element from 'element-ui';
import './styles/element-variables.scss';
// import enLang from 'element-ui/lib/locale/lang/en'; // 如果使用中文语言包请默认支持，无需额外引入，请删除该依赖

import '@/styles/index.scss'; // global css
import '@/styles/ruoyi.scss'; // ruoyi css

import App from './App';
import store from './store';
import router from './router';
import plugins from  './plugins' // plugins


import './icons'; // icon
import './permission'; // permission control
import './utils/error-log'; // error log

import * as filters from './filters'; // global filters
// 分页组件
import Pagination from '@/components/Pagination';

import {
  parseTime,
  resetForm,
  addDateRange,
  selectDictLabel,
} from '@/utils/ruoyi';

/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online ! ! !
 */

if (process.env.NODE_ENV === 'production') {
  const {mockXHR} = require ('../mock');
  mockXHR ();
}
// 全局方法挂载
Vue.prototype.parseTime = parseTime;
Vue.prototype.resetForm = resetForm;
Vue.prototype.addDateRange = addDateRange;
Vue.prototype.selectDictLabel = selectDictLabel;

// 全局组件挂载
Vue.component ('Pagination', Pagination);
Vue.use(plugins)
Vue.use (Element, {
  size: Cookies.get ('size') || 'medium', // set element-ui default size
  // locale: enLang // 如果使用中文，无需设置，请删除
});

// register global utility filters
Object.keys (filters).forEach (key => {
  Vue.filter (key, filters[key]);
});

Vue.config.productionTip = false;

new Vue ({
  el: '#app',
  router,
  store,
  render: h => h (App),
});
